home *** CD-ROM | disk | FTP | other *** search
-
-
-
- ccccpppprrrrooooddddmmmm1111dddd,,,,zzzzpppprrrrooooddddmmmm1111dddd((((3333FFFF)))) ccccpppprrrrooooddddmmmm1111dddd,,,,zzzzpppprrrrooooddddmmmm1111dddd((((3333FFFF))))
-
-
-
- NNNNAAAAMMMMEEEE
- ccccpppprrrrooooddddmmmm1111dddd,,,, zzzzpppprrrrooooddddmmmm1111dddd ---- Compute the product of Multiple 1D Fourier
- transforms with Multiple 1D filters.
-
- SSSSYYYYNNNNOOOOPPPPSSSSYYYYSSSS
- _F_o_r_t_r_a_n :
- ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee ccccpppprrrrooooddddmmmm1111dddd(((( nnnn,,,,pppp,,,,aaaarrrrrrrraaaayyyy,,,,iiiinnnnccccaaaa,,,,llllddddaaaa,,,,ffffiiiilllltttteeeerrrr,,,,iiiinnnnccccffff,,,,llllddddffff))))
- iiiinnnntttteeeeggggeeeerrrr nnnn,,,, pppp,,,, iiiinnnnccccaaaa,,,, llllddddaaaa,,,, iiiinnnnccccffff,,,, llllddddffff
- ccccoooommmmpppplllleeeexxxx aaaarrrrrrrraaaayyyy((((llllddddaaaa,,,,pppp)))),,,, ffffiiiilllltttteeeerrrr((((llllddddffff,,,,pppp))))
-
- ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee zzzzpppprrrrooooddddmmmm1111dddd(((( nnnn,,,,pppp,,,,aaaarrrrrrrraaaayyyy,,,,iiiinnnnccccaaaa,,,,llllddddaaaa,,,,ffffiiiilllltttteeeerrrr,,,,iiiinnnnccccffff,,,,llllddddffff))))
- iiiinnnntttteeeeggggeeeerrrr nnnn,,,, pppp,,,, iiiinnnnccccaaaa,,,, llllddddaaaa,,,, iiiinnnnccccffff,,,, llllddddffff
- ddddoooouuuubbbblllleeee ccccoooommmmpppplllleeeexxxx aaaarrrrrrrraaaayyyy((((llllddddaaaa,,,,pppp)))),,,, ffffiiiilllltttteeeerrrr((((llllddddffff,,,,pppp))))
-
-
- _C :
- ####iiiinnnncccclllluuuuddddeeee <<<<fffffffftttt....hhhh>>>>
- iiiinnnntttt ccccpppprrrrooooddddmmmm1111dddd((((iiiinnnntttt nnnn,,,, iiiinnnntttt pppp,,,, ccccoooommmmpppplllleeeexxxx ****aaaarrrrrrrraaaayyyy,,,, iiiinnnntttt iiiinnnncccc,,,,iiiinnnntttt llllddddaaaa,,,,
- ccccoooommmmpppplllleeeexxxx ****ffffiiiilllltttteeeerrrr,,,, iiiinnnntttt iiiinnnnccccffff,,,, iiiinnnntttt llllddddffff))));;;;
- iiiinnnntttt zzzzpppprrrrooooddddmmmm1111dddd((((iiiinnnntttt nnnn,,,, iiiinnnntttt pppp,,,, zzzzoooommmmpppplllleeeexxxx ****aaaarrrrrrrraaaayyyy,,,,iiiinnnntttt iiiinnnncccc,,,,iiiinnnntttt llllddddaaaa,,,,
- zzzzoooommmmpppplllleeeexxxx ****ffffiiiilllltttteeeerrrr,,,, iiiinnnntttt iiiinnnnccccffff,,,, iiiinnnntttt llllddddffff))));;;;
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- ccccpppprrrrooooddddmmmm1111dddd and zzzzpppprrrrooooddddmmmm1111dddd compute the product of the Fourier transforms of P
- complex sequences of N samples with the Fourier transforms of P complex
- filters. Note, the product of the Fourier transforms of two sequences is
- equal to the Fourier transform of their convolution.
-
-
- PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS
- NNNN ---- Integer, the number of samples in each sequence.
- Unchanged on exit.
-
- PPPP ---- Integer, the number of sequences. Unchanged on exit.
-
- AAAARRRRRRRRAAAAYYYY ---- Array containing the Fourier Transform. On exit, the array is
- overwritten by the product.
-
- IIIINNNNCCCCAAAA ---- Integer, increment between two consecutive elements of the
- sequence. Unchanged on exit.
-
- LLLLDDDDAAAA ---- Integer, leading dimension: increment between the first samples of
- two consecutive sequences. Unchanged on exit.
-
- FFFFIIIILLLLTTTTEEEERRRR ---- Array containing the Fourier Transform of the filter(s).
- Unchanged on exit.
-
- IIIINNNNCCCCFFFF ---- Integer, increment between two consecutive elements of the filter.
- Unchanged on exit.
-
-
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- ccccpppprrrrooooddddmmmm1111dddd,,,,zzzzpppprrrrooooddddmmmm1111dddd((((3333FFFF)))) ccccpppprrrrooooddddmmmm1111dddd,,,,zzzzpppprrrrooooddddmmmm1111dddd((((3333FFFF))))
-
-
-
- LLLLDDDDFFFF ---- Integer, leading dimension: increment between the first samples of
- two consecutive filters. Unchanged on exit.
-
-
- EEEExxxxaaaammmmpppplllleeee ooooffff CCCCaaaalllllllliiiinnnngggg SSSSeeeeqqqquuuueeeennnncccceeee
- Working on 64 sequences of 1024 complex values each. We successively
- apply a Direct Fourier Transform, the product with a SINGLE filter
- transform, then an Inverse Fourier Transform-
- Elements of each sequence are stored with increment (stride)1, and the
- offset between the first element of two succesive sequences (leading
- dimension) is 2049.
- _F_o_r_t_r_a_n
- complex array(0:2049-1,0:64-1),
- filter(0:2049-1,0:64-1), coeff(1024+15)
- call cfftm1di( 1024, coeff)
- call cfftm1d( -1, 1024, 64, array, 1, 2049, coeff)
- ccccaaaallllllll ccccpppprrrrooooddddmmmm1111dddd(((( 1111000022224444,,,, 66664444,,,, aaaarrrrrrrraaaayyyy,,,, 1111,,,, 2222000044449999,,,, ffffiiiilllltttteeeerrrr,,,, 1111,,,, 0000))))
- call cfftm1d( 1, 1024, 64, array, 1, 2049, coeff)
-
- _C
- #include <fft.h>
- complex array[64*2049], filter[2049], *coeff;
- coeff = cfftm1di( 1024, NULL);
- cfftm1d( -1, 1024, 64, array, 1, 2049, coeff);
- ccccpppprrrrooooddddmmmm1111dddd(((( 1111000022224444,,,, 66664444,,,, aaaarrrrrrrraaaayyyy,,,, 1111,,,, 2222000044449999,,,, ffffiiiilllltttteeeerrrr,,,, 1111,,,, 0000))));;;;
- cfftm1d( -1, 1024, 64, array, 1, 2049, coeff);
-
- NNNNOOOOTTTTEEEE____1111 :::: Using a 0 leading dimension for the filter is equivalent to
- applying the same filter to all the input sequences.
-
- NNNNOOOOTTTTEEEE____2222 :::: As the FFTs are not normalized, a successive direct, then
- inverse transform, scales the original input by the size of the sequence.
- Rather than calling cscalm1d or zscalm1d to scale back the result, this
- scaling factor could be directly applied to the filter transform, thus
- saving some extra work.
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- fft, cfftm1di, zfftm1di, cfftm1d, zfftm1d, cscalm1d, zscalm1d
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-